簡體   English   中英

從其他目錄運行BASH腳本時出現問題(目錄位於路徑中)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM