我想在Shell脚本中操纵URL。我需要使用&
分隔符来剪切URL,并获取相应的字符串。
我尝试了example="$(cut -d'&' -f2- <<< $1)"
,但是当我执行此代码并尝试echo $example
时,它想执行$example
的内容。
有人可以帮助我吗?
答案 0 :(得分:2)
您可能只需要引用变量即可。
问题脚本:
#!/bin/bash
example="$(cut -d'&' -f2- <<< $1)"
echo $example
如果通过Shellcheck运行它,则会在输出中得到它:
example="$(cut -d'&' -f2- <<< $1)"
^-- SC2086: Double quote to prevent globbing and word splitting.
echo $example
^-- SC2086: Double quote to prevent globbing and word splitting.
固定脚本:
#!/bin/bash
example="$(cut -d'&' -f2- <<< "$1")"
echo "$example"
答案 1 :(得分:1)
不,不是。
当您这样做:
example="$(cut -d'&' -f2- <<< $1)"
它尝试执行cut
。作为测试:
ljm@verlaine[~]$ a='1&ls&3&4'
ljm@verlaine[~]$ example="$(cut -d'&' -f2- <<< $a)"
ljm@verlaine[~]$ echo $example
ls&3&4
ljm@verlaine[~]$
而且,尽管像iBug这样建议的报价是一个好主意和最佳实践,但在这里并不是绝对必需的。