Q
猛砸串用空格
1
A
回答
1
你可以使用一個陣列:
$ var="--env=test --arg=foo"
$ arr=($var)
$ printf "%s\n" "${arr[@]}"
--env=test
--arg=foo
其中var
標記由IFS
分裂(默認爲:空格,製表,換行)。如果要分割僅的空間,只需設置IFS=' '
:
IFS=' ' arr=($var)
2
您可以使用BASH正則表達式:
var="--env=test --arg=foo"
[[ $var =~ =([^ ]+) ]] && echo "${BASH_REMATCH[1]}"
test
使用extglob
,您可以在更短的代碼做到這一點:
shopt -s extglob
echo "${var//+(*|+([! ])=)}"
test
+1
這是避免分裂和通配的唯一解決方案。 –
1
util-linux
(其中s應該是任何Linux發行版的一部分)有內置支持getopts命令行解析。
使用你的情況:
var="blub --env=test --arg=foo"
eval set -- $(getopt --longoptions env:,arg: -- $var)
while true ; do
case "$1" in
--arg)
echo "Arg is $2"
shift 2
;;
--env)
echo "Env is $2"
shift 2
;;
--) shift ; break ;;
esac
done
相關問題
- 1. 猛砸串
- 2. 格局猛砸
- 3. 字符串猛砸
- 4. 猛砸建築串
- 5. 猛砸匹配字符串
- 6. 猛砸日期格式
- 7. 猛砸更正格式化
- 8. 猛砸選擇用字符串返回
- 9. 猛砸符號化引用字符串用空格作爲單個單詞
- 10. 猛砸忽略$
- 11. 讀線,猛砸
- 12. 在猛砸
- 13. 遍歷猛砸
- 14. 從猛砸
- 15. 從猛砸
- 16. 猛砸看到的空白爲新線
- 17. 猛砸使用方昨日
- 18. 猛砸計算器
- 19. 猛砸join命令
- 20. 在猛砸文件
- 21. 猛砸對目錄
- 22. 懶評價猛砸
- 23. 猛砸壞替代
- 24. 猛砸遊戲Scorefile
- 25. 猛砸本地化
- 26. 猛砸JSON字符串變量
- 27. 猛砸這裏文檔<< - 跳過前面的空格
- 28. 猛砸格式的十六進制字符串
- 29. 罐子:命令猛砸
- 30. 猛砸getopts的命令
你不應該擺在首位這樣的字符串。它表明了一個設計缺陷。你怎麼得到的?如果它在腳本中定義,則應該重寫它以使用數組。 –