我正在尝试从字符串中检索前5个字符,但不断收到Bad substitution
字符串操作行的错误,我的teststring.sh
脚本中有以下行:
TESTSTRINGONE="MOTEST"
NEWTESTSTRING=${TESTSTRINGONE:0:5}
echo ${NEWTESTSTRING}
Run Code Online (Sandbox Code Playgroud)
我已多次查看语法,无法看到我做错了什么
谢谢
Ale*_*x L 62
根据您的shell,您可以使用以下语法:
expr substr $string $position $length
Run Code Online (Sandbox Code Playgroud)
所以对于你的例子:
TESTSTRINGONE="MOTEST"
echo `expr substr ${TESTSTRINGONE} 0 5`
Run Code Online (Sandbox Code Playgroud)
或者,
echo 'MOTEST' | cut -c1-5
Run Code Online (Sandbox Code Playgroud)
要么
echo 'MOTEST' | awk '{print substr($0,0,5)}'
Run Code Online (Sandbox Code Playgroud)
小智 45
在这里工作:
$ TESTSTRINGONE="MOTEST"
$ NEWTESTSTRING=${TESTSTRINGONE:0:5}
$ echo ${NEWTESTSTRING}
MOTES
Run Code Online (Sandbox Code Playgroud)
你用的是什么外壳?
子字符串${variablename:0:5}
是一个bash功能,在基本shell中不可用.你确定你在bash下运行吗?检查shebang行(在脚本的开头),并确保它#!/bin/bash
不是#!/bin/sh
.
适用于大多数炮弹
TESTSTRINGONE="MOTEST"
NEWTESTSTRING=${TESTSTRINGONE%"${TESTSTRINGONE#?????}"}
echo ${NEWTESTSTRING}
# MOTES
Run Code Online (Sandbox Code Playgroud)