[英]passing bash a value with leading hyphen
我有一個bash命令,要求在“ -v”之后有一個字符串值。 當此字符串值帶有前導“-”時,bash嘗試將其解釋為bash命令的新選項,而不是我嘗試提供的-v值。 有沒有辦法可以擺脫這種領先的連字符? 我嘗試了-v -- -myValue
但隨后它告訴我“選項'-v'需要一個參數”。
該命令正在調用ruby文件。 對於這個問題,我認為這是Ruby代碼中有意義的部分:
opts = Trollop::options do
opt :method, "Encrypt or Decrypt", :short => "m", :type => :string, :default => "decrypt"
opt :value, "Value to Decrypt or Encrypt", :short => "v", :type => :string, :default => ""
end
有兩種指定參數的常規方法,但是這些方法不是在Shell級別強制執行的,它們只是傳統方法:
-v xxxx
--value=xxxx
現在有時可以執行以下操作:
-vxxxx
如果您的值帶有破折號並且無法正確解釋,請執行以下操作:
--value=-value
cmd -v '-string value with leading dash'
$ cat ~/tmp/test.sh
#!/bin/bash
str=
while getopts "v:" opt; do
case "$opt" in
v) str=$OPTARG;;
esac
done
shift $(( OPTIND -1 ))
echo "option was '$str'"
簡單的測試文件,我的bash是GNU bash,版本4.3.11(1)-發行版(x86_64-pc-linux-gnu)
結果:
chris@druidstudio:~⟫ ~/tmp/test.sh -v string
option was 'string'
chris@druidstudio:~⟫ ~/tmp/test.sh -v -string
option was '-string'
chris@druidstudio:~⟫ ~/tmp/test.sh -v '-string'
option was '-string'
因此,也許處理您的選項的bash腳本編寫不正確,或者您使用的bash早期版本。 正如我之前在另一個愚蠢的問題中回答的那樣,千里眼不是我的技能之一。 因此,請做好准備,並可能給我們您要尋求幫助的人員,相關信息(正如您所說的那樣,您的腳本在bash級別而不是在ruby級別失敗,所以為什么要麻煩發布一個ruby腳本?)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.