3

如何将变量复制到 shell 脚本中的另一个变量?

假设用户已经传入$1,如何将其值复制到另一个变量中?

我想它看起来像这样......

cp $1 $2

echo "Copied value: $2"
4

5 回答 5

3

请注意,cp用于copy files and directories. 要定义变量,您只需使用以下语法:

v=$1

例子

$ cat a
echo "var v=$v"
v=$1
echo "var v=$v"
$ ./a 23         <---- we execute the script
var v=           <---- the value is not set
var v=23         <---- the value is already set
于 2013-07-16T12:05:17.313 回答
1

首先cp是仅用于复制文件和目录(如手册页所述)

其次,不可能分配给参数变量($0..$1..$n)。它们是只读的。

你可以这样做:

input2=$1

它会将 的值复制$1到一个名为$input2

于 2013-07-16T12:05:40.290 回答
0
val=$1  
echo "Copied Value : $val"
于 2013-07-16T12:06:06.927 回答
0

您正在使用cpwhich 用于复制文件。

只需使用

v=$1

并回应它:

echo "Copied Variable: $v"
于 2013-07-16T12:08:50.793 回答
0

我发现 set -- 是一个非常有用的命令来设置位置参数。例如,在您给出的示例中,并得到了很好的回答:

cp file1 file2    

将“file1”复制到“file2”。经常当我处理几个文件时,我会这样做:

set -- file1 file2
cp $1 $2

如果要反转变量中的名称:

set -- $2 $1        # puts the current "$2" value in "$1", and vice versa, then
cp $1 $2            # copies what was   file2   contents back to file1.

这没有使用您已经看到的任何“命名”变量。我更常见的用法是:

set -- ${1%.txt}    # strips a ".txt" suffix 
set -- $1 $1.out $1.err   # sets 2nd to <whatever>.out and 3rd to <whatever>.err, so
cmd $1.txt > $2 2>$3      # puts stdout in  ...out  and stderr in ...err

v

于 2013-07-16T19:42:05.767 回答