gpt4 book ai didi

linux - sh 中的子字符串返回 "Bad substitution"

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:29 27 4
gpt4 key购买 nike

在这段代码中:

#!/bin/sh
a='sdsdsd'
c=${a:0:1}

我使用第二行逐个读取字符串的字节(在循环中),但它在 sh 中返回错误(“sh: 3: Bad substitution”)。在 sh 模式下有什么办法吗?由于某些原因,我应该使用 sh(不是 bash,而且我知道 bash 可以)

最佳答案

子串参数扩展不是POSIX shell specification的一部分.这是一个 ksh/bash 特性。需要的话可以不用#!/bin/sh

如果需要使用sh,需要调用expr

$ dash -c '
a="ABCDEF"
i=1
while [ "$i" -le "${#a}" ]; do
c=$(expr substr "$a" "$i" 1)
echo "$i:$c"
i=$((i + 1))
done
'
1:A
2:B
3:C
4:D
5:E
6:F

关于linux - sh 中的子字符串返回 "Bad substitution",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47332006/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com