首页 > 解决方案 > 我希望我的脚本从字面上将“$ 1”回显到文件中

问题描述

这是我脚本的一部分

#!/bin/bash

echo "ls /SomeFolder | grep $1 | xargs cat | grep something | grep  .txt | awk '{print $2}' | sed 's/;$//';" >> script2.sh

除了 $1 和 $2 之外,这一切都很好地反映在我的脚本中。相反,它输出这些变量的输入,但我希望它从字面上读取“$1”和“$2”。帮助?

标签: bashvariablesecho

解决方案


逃脱它:

echo "ls /SomeFolder | grep \$1 | xargs cat | grep something | grep  .txt | awk '{print \$2}' | sed 's/;\$//';" >> script2.sh

引用它:

echo "ls /SomeFolder | grep "'$'"1 | xargs cat | grep something | grep  .txt | awk '{print "'$'"2}' | sed 's/;"'$'"//';" >> script2.sh

或像这样:

echo 'ls /SomeFolder | grep $1 | xargs cat | grep something | grep  .txt | awk '\''{print $2}'\'' | sed '\''s/;$//'\'';' >> script2.sh

使用此处引用的文档

cat << 'EOF' >> script2.sh
ls /SomeFolder | grep $1 | xargs cat | grep something | grep  .txt | awk '{print $2}' | sed 's/;$//';
EOF

基本上你想防止扩展,即。从字面上看字符串。您可能想阅读bashfaq 引号


推荐阅读