[英]Problems running BASH script from a different directory (directory is in path)
為了開始學習BASH腳本,我創建了一個簡單的腳本,該腳本可以縮小YAHOO的股價並將其打印到STDOUT。 我已將所有人的權限設置為rwx,並將文件移到我的路徑中:
腳本:
root@raspberrypi:~/code/scripts$ cat quote
#!/bin/bash
while getopts "s:" opt; do
case $opt in
s)STOCK="$OPTARG";;
\?) echo "ERROR"; exit 1;;
esac
done
PRICE=$(curl -s "http://download.finance.yahoo.com/d/quotes.csv?s=${STOCK}&f=l1")
echo "${STOCK}: ${PRICE}"; exit 0
exit 0
然后,我為所有用戶設置權限:
root@raspberrypi:~/code/scripts$ chmod 777 quote
這是我的$ PATH:
root@raspberrypi:~/code/scripts$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
現在,我將其移動到我所讀的路徑中,該路徑是自定義用戶腳本的適當位置:
root@raspberrypi:~/code/scripts$ ls -la /usr/local/bin
total 12K
drwxrwsr-x 2 root staff 4.0K Apr 30 01:28 ./
drwxrwsr-x 10 root staff 4.0K Jan 1 1970 ../
-rwxrwxrwx 1 root root 433 Apr 30 01:22 quote*
哪個命令可以找到它(預期):
root@raspberrypi:~/code/scripts$ which quote
/usr/local/bin/quote
問題:運行腳本時,它在下一行返回第一個選項,然后出現提示:
root@raspberrypi:~/code/scripts$ quote -s aapl
'-s'root@raspberrypi:~/code/scripts$
但是,當我使用完整路徑運行腳本時,它可以正常工作:
root@raspberrypi:~/code/scripts$ /usr/local/bin/quote -s aapl
-s: 592.33
抱歉,這不是一個編程問題,而更多是一個Unix問題,但是我想確保在執行其他任何操作之前,先排除我的代碼有問題。
我敢肯定這很簡單,所以在此先感謝您的補充。
您只是為腳本選擇了一個不幸的名字。 quote
也是bash_completion包中函數的名稱,並且函數會覆蓋外部腳本。
type quote
將表明它是一個函數( whereis
不知道這些事情)。
重命名它或禁用bash_completion。 或每次都運行command quote
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.