s='id;some text here with possible ; inside'
IFS=';' read -r id string <<< "$s"
echo "$id"
restore.sh: 2: restore.sh: Syntax error: redirection unexpected
bash版本
GNU bash, version 4.2.37(1)-release (x86_64-pc-linux-gnu)
此处字符串只是此处小文档的快捷方式。这应该可以在任何 POSIX shell 中工作:
string='id;some text here with possible ; inside'
IFS=';' read -r id string <<EOF
$string
EOF
echo "$id"
您似乎正在使用
sh
来执行脚本。 sh
不支持这里字符串;因此出现错误。
确保您使用
bash
来执行脚本。
将其保存在文件分割中
#!/bin/sh
string=$1
c=0
while [ $c -le $3 ]
do
val1=`echo "$string" |sed 's/\(^[^'$2']*\)\('$2'\+\)\(.*$\)/\1/'`
string=`echo "$string" |sed 's/\(^[^'$2']*\)\('$2'\+\)\(.*$\)/\3/'`
if [ "$val1" == "$string" ]
then
string=''
fi
if [ "$val1" == "" ]
then
let c=$3
fi
let c=c+1
done
echo $val1
并且有效:
root@IPHONE:~# ./split 'a;b;c' ';' 0
a
root@IPHONE:~# ./split 'a/b/c' '\/' 0
a
root@IPHONE:~# ./split 'a/b/c' '\/' 2
c
root@IPHONE:~# ./split 'a/b/c' '\/' 1
b
我的结果:
[root@localhost ~]# bash --version
GNU bash, version 3.2.25(1)-release (i686-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
[root@localhost ~]# ./bash
id
[root@localhost ~]# cat bash
s='id;some text here with possible ; inside'
IFS=';' read -r id string <<< "$s"
echo "$id"
在这里工作过。
我用过下面的
python2.7
:
#!/bin/sh
s='id;some text here with possible ; inside'
python -c "ifc, s =';', '$s';print s.split(';')[0] if ifc in s else ''"
结果:
$ ./test.sh
id