Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何导出变量unixshell脚本_Shell_Unix_Csh - Fatal编程技术网

如何导出变量unixshell脚本

如何导出变量unixshell脚本,shell,unix,csh,Shell,Unix,Csh,我正在尝试使用egrep和regex验证输入 如果我将echo管道传输到egrep,它会工作,但它也会在屏幕上打印变量,这是我不需要的。您可以使用awk $ echo "1234" | awk '{print $1+0==$1?"ok":"not ok"}' ok $ echo "123d4" | awk '{print $1+0==$1?"ok":"not ok"}' not ok 你可以用awk $ echo "1234" | awk '{print $1+0==$1?"ok":"not

我正在尝试使用egrep和regex验证输入

如果我将echo管道传输到egrep,它会工作,但它也会在屏幕上打印变量,这是我不需要的。

您可以使用awk

$ echo "1234" | awk '{print $1+0==$1?"ok":"not ok"}'
ok
$ echo "123d4" | awk '{print $1+0==$1?"ok":"not ok"}'
not ok
你可以用awk

$ echo "1234" | awk '{print $1+0==$1?"ok":"not ok"}'
ok
$ echo "123d4" | awk '{print $1+0==$1?"ok":"not ok"}'
not ok

要简单地抑制输出,可以将其重定向到空设备

echo $1 | egrep '^[0-9]+$' >/dev/null
if ($status == 0) then
set numvar = $1
else
    echo "Invalid input"
    exit 1
endif

您可能还想考虑使用<代码> -c>代码>选项来获得匹配的计数,而不是使用状态。


此外,除非您使用的是
csh
,否则状态存储在
$?
中,而不是
$status

中。为了简单地抑制输出,您可以将其重定向到空设备

echo $1 | egrep '^[0-9]+$' >/dev/null
if ($status == 0) then
set numvar = $1
else
    echo "Invalid input"
    exit 1
endif

您可能还想考虑使用<代码> -c>代码>选项来获得匹配的计数,而不是使用状态。


另外,除非您使用的是
csh
,否则状态存储在
$?
中,而不是
$status

grep
中有一个
-q
选项禁止输出

因此:


grep
有一个抑制输出的
-q
选项

因此:


谢谢,但我更喜欢白鹭,只是因为我不知道它叫什么。我可能会在将来给它,但现在我没有时间学习。谢谢,但我更喜欢白鹭,只是因为我不知道awk。我可能会在将来给出它,但现在我没有时间学习它。我按照您的建议使用了-c选项,并且我还设置了新变量以在if语句中使用。set temp=
echo$1 | egrep-c'^[0-9]+$'
如果($temp!=0),那么在csh中,退出状态确实存储在
$status
中,我添加了一个关于csh的说明,并将添加一个csh标记。我按照您的建议使用了-c选项,并且我还设置了要在if语句中使用的新变量。set temp=
echo$1 | egrep-c'^[0-9]+$”
如果($temp!=0),那么在csh中,退出状态确实存储在
$status
中,我添加了一个关于csh的说明,并将添加一个csh标记。手册页上说:“便携式shell脚本应该避免-q和-s,应该将标准和错误输出重定向到/dev/null。(-s由POSIX指定。)“@Dennis-关于可移植性问题,你是对的。实际上,-s和-q选项都是由POSIX指定的。在这里,-q选项的作用与我使用它的方式相同,-s选项会抑制错误消息。请参阅可移植shell脚本可能不会在CSH中编写手册页上说:“可移植shell脚本应避免-q和-s,并应将标准和错误输出重定向到/dev/null。(-s由POSIX指定。)“@Dennis-关于可移植性问题,你是对的。实际上,-s和-q选项都是由POSIX指定的。在这里,-q选项的作用与我使用它的方式相同,-s选项会抑制错误消息。请参阅,可移植shell脚本可能不会用csh编写