【问题标题】:Copy a variable in shell script (Linux)在 shell 脚本中复制变量(Linux)
【发布时间】:2013-07-16 12:03:11
【问题描述】:

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

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

我假设它看起来像这样......

cp $1 $2

echo "Copied value: $2"

【问题讨论】:

  • 为什么是cpx="$1" 有什么问题,然后回显“复制值:$x”
  • 他有一个烧烤架,但他希望他的鸡只用火箭螺旋桨烤!
  • +1 表示今年最出色地使用了cp

标签: linux shell unix terminal


【解决方案1】:

注意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

【讨论】:

    【解决方案2】:

    首先cp 仅用于复制文件和目录(如man page 所述)

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

    您可以这样做:

    input2=$1
    

    它将$1的值复制到一个名为$input2的新变量中

    【讨论】:

      【解决方案3】:
      val=$1  
      echo "Copied Value : $val"
      

      【讨论】:

        【解决方案4】:

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

        随便用

        v=$1
        

        并回显它:

        echo "Copied Variable: $v"
        

        【讨论】:

        • 为什么要重复以前说过的话?
        【解决方案5】:

        我发现 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

        【讨论】:

          猜你喜欢
          • 2015-03-26
          • 1970-01-01
          • 2015-03-02
          • 2012-08-29
          • 2011-08-24
          • 2020-11-01
          • 1970-01-01
          • 2016-10-23
          • 2018-05-27
          相关资源
          最近更新 更多