簡體   English   中英

如何在bash中的單獨變量中存儲命令和選項

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

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