我在脚本文件的第一行有以下行:
#!/bin/sh
所以我正在使用csh。(?)
我想将以下输出分配给环境变量:
echo $MYUSR | awk '{print substr($0,4)}'
我试试:
set $MYVAR = echo $MYUSR | awk '{print substr($0,4)}'
但它不起作用, 我该怎么做?我想在sh文件中做到这一点。
答案 0 :(得分:2)
您的脚本应该是
#!/bin/csh
set MYVAR = `echo $MYUSR | awk '{print substr($0,4)}'`
echo $MYVAR
我现在没有办法对此进行测试,如果它不起作用,现在就让我吧。
如果您使用#!/bin/sh
继承了其他人的脚本基础,
然后你必须找出/ bin / sh是否真的是bourne shell,或者它是否是/ bin / bash的链接
你可以通过
来判断 ls -l /bin/sh /bin/bash
如果你找回大小完全相同的文件的信息,你真的使用bash,但称为/ bin / sh
所以试试这两个解决方案
MYVAR=$(echo $MYUSR | awk '{print substr($0,4)}')
echo $MYVAR
和
MYVAR=``echo $MYUSR | awk '{print substr($0,4)}``
echo $MYVAR
# arg!! only one pair of enclosing back-ticks needed,
# can't find the secret escape codes to make this look exactly right.
在所有情况下(csh)包括,后面的标记和$( ... )
被称为命令替换。
每个输出来自内部运行命令,将被替换为命令行,然后执行整个命令。
我希望这会有所帮助。
答案 1 :(得分:0)
如果它是/bin/sh
它是bourne shell或bash,并使用后面的引号来执行某些操作,并指定它...
MYVAR=`echo $MYUSR | awk ...`
答案 2 :(得分:0)
该脚本第一行表示它应由Bourne shell(sh)解释,而不是csh。将其更改为
#!/bin/csh
答案 3 :(得分:0)
代码的第一行显示您没有使用csh
。您正在使用普通的sh
环境/ shell。您有两个选择:
#!/bin/csh
或保持第一行不变,更新设置变量的代码。
MYVAR=`echo $MYUSR | awk '{print substr($0,4)}`
echo $MYVAR
如果您收到任何错误,请告诉我。