在bash中有一种方法可以将字符串转换为小写字符串吗?
例如,如果我有:
a="Hi all"
Run Code Online (Sandbox Code Playgroud)
我想将其转换为:
"hi all"
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个用于测试的bash脚本,它接受一个参数并通过curl将其发送到网站.我需要对值进行url编码,以确保正确处理特殊字符.做这个的最好方式是什么?
这是我到目前为止的基本脚本:
#!/bin/bash
host=${1:?'bad host'}
value=$2
shift
shift
curl -v -d "param=${value}" http://${host}/somepath $@
Run Code Online (Sandbox Code Playgroud) 有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
我试图通过read命令迭代作为输入的字符串.我正在尝试输出每个字母和每个字母的数量然后应该使用循环依次输出每个字母.例如,如果用户输入"picasso",则输出应为:
信1:p信2:我信3:c信4:信5:信6:信7:o
这是我目前的代码:
#!/bin/bash
# Prompt a user to enter a word and output each letter in turn.
read -p "Please enter a word: " word
for i in $word
do
echo "Letter $i: $word"
done
Run Code Online (Sandbox Code Playgroud)
我应该将输入放入数组吗?我仍然是编程循环的新手,但我发现无法弄清楚逻辑.
有什么建议?谢谢.
所以我在我的脚本中引入一个数字,就像这样:
./script 795
Run Code Online (Sandbox Code Playgroud)
我想从该数字中提取每个数字并检查它是否小于7.如下所示:
if [ 7 -le 7 ]
then
echo "The first digit is smaller than 7"
Run Code Online (Sandbox Code Playgroud)
我想知道如何提取每个数字.
符合POSIX的shell应提供这样的机制来迭代字符串集合:
for x in $(seq 1 5); do
echo $x
done
Run Code Online (Sandbox Code Playgroud)
但是,如何迭代单词的每个字符?
我应该如何遍历字符串中的所有字符。
我的伪代码
stringVar="abcde"
for var in stringvar
{
do some things with var
}
Run Code Online (Sandbox Code Playgroud)
结果我需要
一个
乙
C
d
我想循环所有的变量,但我只能让它与一个空格分割的变量一起工作,比如
stringVar="a b c"
for var in stringVar; do
echo $var
done;
Run Code Online (Sandbox Code Playgroud)
结果
一种
乙
C
但我不能为一个没有用空格分割的字符串做这件事。
该问题被标记为重复,但在链接的问题中没有一个答案(带有赞成票)可用。