小编use*_*935的帖子

bash 根据“IFS”变量的值改变其行为

当我将IFS变量设置为一个空格时,bash将多个空格视为一个空格(myprogram是一个打印它接收到的命令行参数的程序):

IFS=" "
x="hello   hi   world"
./myprogram $x
argv[1] = hello
argv[2] = hi
argv[3] = world
Run Code Online (Sandbox Code Playgroud)

但是当我将IFS变量设置为逗号时,bash不会将多个逗号视为一个逗号:

IFS=","
x="hello,,,hi,,,world"
./myprogram $x
argv[1] = hello
argv[2] = 
argv[3] = 
argv[4] = hi
argv[5] = 
argv[6] = 
argv[7] = world
Run Code Online (Sandbox Code Playgroud)

这是为什么?

shell bash

18
推荐指数
1
解决办法
657
查看次数

如何输出“$@”的单个元素?

我读过这$@是一个保存位置参数的数组。

我试图输出$@数组的一个元素:

echo ${@[1]}
Run Code Online (Sandbox Code Playgroud)

但是bash给了我这个错误:

test.sh: line 1: ${@[1]}: bad substitution
Run Code Online (Sandbox Code Playgroud)

bash parameter

5
推荐指数
2
解决办法
420
查看次数

有没有办法在不使用变量时使用非空格分隔符进行分词?

如果我做这样的事情:

IFS=,
x=hello,hi,world
echo $x
Run Code Online (Sandbox Code Playgroud)

然后将提取三个参数(即helloandhiworld),并将这三个参数传递给echo

但是当我不使用变量时:

IFS=,
echo hello,hi,world bye
Run Code Online (Sandbox Code Playgroud)

然后将使用空格分隔符而不是逗号分隔符进行分词,因此生成并传递给的两个参数echo将是hello,hi,worldand bye

有没有办法在不使用变量时使用非空格分隔符进行分词?

shell bash

5
推荐指数
1
解决办法
403
查看次数

标签 统计

bash ×3

shell ×2

parameter ×1