[英]How to store a command and options in separate variables in bash
我正在嘗試創建一個bash腳本,該腳本要求一個目錄,然后要求選項(均使用對話框),但似乎無法正常工作。
如果目錄為$directory
並且選項另存為$options
,則假定該命令為:
ls $options $directory
但是到目前為止,這還沒有奏效。 該命令嘗試將選項作為目錄運行時失敗。 問題的一部分似乎是清單中的輸入帶有雙引號,但是我不確定如何刪除它們。 另外,如果我運行:
ls "-A" ~
然后該命令運行良好,但是通過bash腳本(並且我已經使用調試器進行了檢查),使用變量或作為硬編碼的行,完全相同的行將失敗。
我是否缺少明顯的東西? 如果有幫助,我可以發布自己使用過的實際代碼。
看來您必須擺脫“”。 您可以這樣實現:
options3=${options3:1}
options3=${options3%?}
要么
options3=`eval echo $options3`
#!/bin/bash
directory=$2
options=$1
options2="-l"
options3="\"-l\""
# correct
#echo "options: $options"
#ls $options $directory
#echo
#echo
# correct
#echo "options: $options2"
#ls $options2 $directory
#echo
#echo
# incorrect
# echo "options: $options3"
# ls $options3 $directory
# correct
options3=${options3:1}
options3=${options3%?}
echo "options: $options3"
ls $options3 $directory
# correct
options3=`eval echo $options3`
ls $options3 $directory
可能是您在波浪號擴展方面遇到了問題。 在變量上使用eval以允許替換。
#!/bin/bash
options="-A"
directory="~"
directory=`eval "echo $directory"`
ls $options $directory
您可以使用$ 0和$ 1(我也可以分別使用$ 1和$ 2)$ 1是第一個參數。 因此,在您的情況下,它將是字典。 例如:ls車
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.