需要提取数字的一部分并将其保存在shell脚本中的变量中
你能帮我解答一下我的问题吗。 我正在运行一个带有2个参数的script.ksh。其中一个参数是类似14103的数字,我想从这个数字中提取1410,并将其保存在一个变量中 例如:需要提取数字的一部分并将其保存在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的文本 当给出命令行参数时,它会尝试将其解释为文件名并读取该文件 如果没有给出
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)