将完整命令回显到文件

将完整命令回显到文件

我有以下命令

echo “more PHONEBOOK.lst | awk '!/ NY /' | sort -k1 | sort -k4 | tee PHONENOTNY.LST” >> NOTNY.sh && chmod 0777 NOTNY.sh 

但是,当我运行命令并查看 NOTNY.sh 的内容时,它包含

“more PHONEBOOK.lst

它应该包含

more PHONEBOOK.lst | awk '!/ NY /' | sort -k1 | sort -k4 | tee PHONENOTNY.LST

如何复制命令中的文本而不是我得到的结果?

答案1

使用普通的“双引号”代替“智能”引号:

printf "%s\n" "more PHONEBOOK.lst | awk '!/ NY /' | sort -k1 | sort -k4 | tee PHONENOTNY.LST" >> NOTNY.sh && chmod 0777 NOTNY.sh 

或者,保存对 的无意义调用more,因为 awk 会读取您告诉它的文件:

printf "%s\n" "awk '!/ NY /' PHONEBOOK.lst | sort -k1 | sort -k4 | tee PHONENOTNY.LST" >> NOTNY.sh && chmod 0777 NOTNY.sh 

或者,因为第二个sort只会覆盖第一个:

printf "%s\n" "awk '!/ NY /' PHONEBOOK.lst | sort -k4 | tee PHONENOTNY.LST" >> NOTNY.sh && chmod 0777 NOTNY.sh 

相关内容