Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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
需要提取数字的一部分并将其保存在shell脚本中的变量中_Shell_Unix_Ksh_Cut - Fatal编程技术网

需要提取数字的一部分并将其保存在shell脚本中的变量中

需要提取数字的一部分并将其保存在shell脚本中的变量中,shell,unix,ksh,cut,Shell,Unix,Ksh,Cut,你能帮我解答一下我的问题吗。 我正在运行一个带有2个参数的script.ksh。其中一个参数是类似14103的数字,我想从这个数字中提取1410,并将其保存在一个变量中 例如: abc.ksh ST 14103 我正在做的是: #!/bin/ksh ENV_TYPE=$1 VER=$2 VER_N=`cut -c1-4 "$VER"` 但这对我不起作用。我缺少什么?命令cut没有使用其命令行参数的文本作为cut的文本 当给出命令行参数时,它会尝试将其解释为文件名并读取该文件 如果没有给出

你能帮我解答一下我的问题吗。 我正在运行一个带有2个参数的script.ksh。其中一个参数是类似14103的数字,我想从这个数字中提取1410,并将其保存在一个变量中

例如:

abc.ksh ST 14103
我正在做的是:

#!/bin/ksh
ENV_TYPE=$1

VER=$2

VER_N=`cut -c1-4 "$VER"`

但这对我不起作用。我缺少什么?

命令
cut
没有使用其命令行参数的文本作为
cut
的文本

当给出命令行参数时,它会尝试将其解释为文件名并读取该文件

如果没有给出参数,则从
stdin
读取。在您的情况下,最简单的方法是将输入导入
cut
stdin
,而不是创建一个临时文件,然后要求
cut
读取它

#!/bin/ksh
ENV_TYPE=$1

VER=$2

VER_N=`echo $VER | cut -c1-4 `

echo $VER_N
输出:

1410

如果您的意思是想要前4个字符,那么您可以完全在bash内部执行此操作(这是使用IMHO更好的shell):

如果您的意思是想要除最后一个字符以外的所有字符(同样在bash中):

或除最后一个字符外的所有字符,但使用
sed

VER_N=$(sed 's/.$//' <<< $VER)

vern=$(sed's/$/')您也可以使用
vern=$(cut-c-4
n=${#VER}          # Get length of VER
((n--))            # Decrement
VER_N=${VER:0:$n}  # Extract all but last

echo $VER_N
1410
VER_N=$(sed 's/.$//' <<< $VER)