包含双引号和单引号的Echo命令

时间:2020-09-18 17:11:15

标签: bash

我有这个命令

cp $(ldd MyApp.out | awk '{print $3}' | sed -E '/^$/d') lib/

在某个时候,我想echo将其保存到文件中,但是幼稚的方法echo command_above无效。

如果我将命令放在单引号中,那么$3会扩展为空格。 是否可以像在echo命令之后那样逐字符打印该命令,而不进行任何扩展和替换?

3 个答案:

答案 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)

出于调试和记录目的,您可以使用443set -x

set -v