无法在Bash中引用参数

时间:2009-05-20 14:35:45

标签: bash unix scripting parameters

我想通过

将TextA放到TextB的开头
cat TextA A TextB

问题在于我不知道如何引用第一个和第二个参数,即 TextA TextB ,在以下脚本中称为A:

  #!/bin/bash

  cat TextA > m1
  cat TextB > m2
  cat m1 m2 > TextB

其中m1和m2是临时文件。

如何引用shell脚本中的两个文件?

6 个答案:

答案 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;)运算符。