我有这个命令
cp $(ldd MyApp.out | awk '{print $3}' | sed -E '/^$/d') lib/
在某个时候,我想echo
将其保存到文件中,但是幼稚的方法echo command_above
无效。
如果我将命令放在单引号中,那么$3
会扩展为空格。
是否可以像在echo
命令之后那样逐字符打印该命令,而不进行任何扩展和替换?
答案 0 :(得分:1)
常见的方法是使用<<
运算符读取直到某些定界符:
# "cat" just prints what it reads
cat << 'EOF' > output_file
cp $(ldd MyApp.out | awk '{print $3}' | sed -E '/^$/d') lib/
EOF
答案 1 :(得分:0)
使用xargs将文件名列表传递给cp
ldd MyApp.out | awk '$3!=""{print $3}' | xargs -d'\n' -I{} cp {} lib/
答案 2 :(得分:0)
出于调试和记录目的,您可以使用443
或set -x
:
set -v