将变量分隔为$ 1 $ 2 $ 3

Pro*_*oxx 1 linux bash

sqlite3 pcheck.db "SELECT * FROM printers"
Run Code Online (Sandbox Code Playgroud)

给我:

 1|10.0.0.x|HP4250INK|public|hp LaserJet 4250|"CNHXXXXXX"|14457|"Sleep Mode"
Run Code Online (Sandbox Code Playgroud)

我想把数据分开| 变量$ 1到$ 8

这样可以输出它

echo "$1 $3 $5"
echo "$2 $4 $6"
Run Code Online (Sandbox Code Playgroud)

./test.sh

1 HP4250INK hp Laserjet 4250
10.0.0.x public "CNHXXXXXX"
Run Code Online (Sandbox Code Playgroud)

bas*_*ist 9

你可以在没有外部工具的情况下使用bash

output=$(sqlite3 pcheck.db "SELECT * FROM printers")
IFS="|"
set -- $output
echo $1
echo $2 #and so on
Run Code Online (Sandbox Code Playgroud)

或使用数组

IFS="|"
output=($(sqlite3 pcheck.db "SELECT * FROM printers"))
echo ${output[0]}
echo ${output[1]} #and so on
Run Code Online (Sandbox Code Playgroud)

  • 如果你在`set`下查看`bash`的手册页,`选项处理后剩下的任何参数都被视为位置参数的值,并按顺序分配给$ 1,$ 2,... $ n. (2认同)