我想通过
将TextA放到TextB的开头cat TextA A TextB
问题在于我不知道如何引用第一个和第二个参数,即 TextA 和 TextB ,在以下脚本中称为A:
#!/bin/bash
cat TextA > m1
cat TextB > m2
cat m1 m2 > TextB
其中m1和m2是临时文件。
如何引用shell脚本中的两个文件?
答案 0 :(得分:4)
您可以使用$0
,$1
,$2
等来引用脚本中的变量。
$0
是脚本本身的名称
$1
是第一个参数
$2
是第二个参数
等等
例如,如果你有这个命令:
a A1 A2
然后在a
里面你会有:
$0 = a
$1 = A1
$2 = A2
答案 1 :(得分:3)
在bash脚本中,第一个参数是$ 1,第二个是$ 2,依此类推。
如果您想要一个默认值,例如您可以使用的第三个参数:
var=${3:-"default"}
答案 2 :(得分:2)
你可以使用append(>>)
cat TextB >> TextA
结果是TextA在TextA
中的文本TextB之前答案 3 :(得分:1)
我会做以下事情:
#!/bin/bash
if [ $# -ne 2 ]
then
echo "Prepend file with copyright notice"
echo "Usage: `basename $0` <copyright-file> <mainfile>"
exit 1
fi
copyright=$1
mainfile=$2
cat $mainfile > /tmp/m.$$
cat $copyright /tmp/m.$$ > $mainfile
#cleanup temporary files
rm /tmp/m.$$ /tmp/m2.$$
答案 4 :(得分:1)
我很惊讶没有人建议以下结果
cat TextA TextB | tee > TextB
这样,您可以避免创建临时文件的麻烦。
答案 5 :(得分:0)
看起来您可以执行以下操作:
TextA="text a"
TextB="text b"
echo "$TextA $TextB" > file1
或使用append(&gt;&gt;)运算符。