将 dirname 的操作数指定为 echo 中的 bash 变量
specifying operand to dirname as a bash variable inside echo
这是我感兴趣的一行(尤其是在变量 out
中):
find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done
我需要先回显这个单行代码,然后再将它输送到另一个程序中,但它失败了:
echo "find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done"
带有以下消息:
dirname: missing operand
Try `dirname --help' for more information.
find ~ | head -3 | while read f; do out=; echo ; done
所以我用单引号和双引号:
echo "find ~ | head -3 | while read f; do out=$(dirname "'${f}'"); echo "'${out}'"; done"
哪个returns没有错误:
find ~ | head -3 | while read f; do out=.; echo ${out}; done
但是 $(dirname ${f})
没有回显 原样 。
知道怎么做吗?
为防止替换使用单引号或转义 $
:
echo 'find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done'
echo "find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done"
使用变量存储命令并回显变量:
cmd='find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done'
echo $cmd
我不知道为什么你只需要用 echo
打印。但是,如果你只想要那样,请参考以下内容:
echo `find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done`
这是我感兴趣的一行(尤其是在变量 out
中):
find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done
我需要先回显这个单行代码,然后再将它输送到另一个程序中,但它失败了:
echo "find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done"
带有以下消息:
dirname: missing operand
Try `dirname --help' for more information.
find ~ | head -3 | while read f; do out=; echo ; done
所以我用单引号和双引号:
echo "find ~ | head -3 | while read f; do out=$(dirname "'${f}'"); echo "'${out}'"; done"
哪个returns没有错误:
find ~ | head -3 | while read f; do out=.; echo ${out}; done
但是 $(dirname ${f})
没有回显 原样 。
知道怎么做吗?
为防止替换使用单引号或转义 $
:
echo 'find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done'
echo "find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done"
使用变量存储命令并回显变量:
cmd='find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done'
echo $cmd
我不知道为什么你只需要用 echo
打印。但是,如果你只想要那样,请参考以下内容:
echo `find ~ | head -3 | while read f; do out=$(dirname ${f}); echo ${out}; done`