我正在编写一个带参数的脚本并读取ls -l
的输出。然后,它会显示用户以及带有该参数的文件STARTING的名称。
例如:
$> ls -l | ./script.sh "o"
John ok_test
RandomUser o_file
我的脚本工作正常,但我有一个(次要的)问题我真正需要修复:它没有像上面的例子那样对齐文件名。
这是上述脚本:
#!/bin/bash
while read hello
do
name=$(echo $hello | cut -d' ' -f9 | grep "^"$1)
if [ $? = 0 ]
then
log=$(echo $hello | cut -d' ' -f3)
echo -n -e $log'\t' && echo $name
fi
done
无论用户名大小,有没有人知道如何对齐输出?
非常感谢。
答案 0 :(得分:1)
我将其重写为:
#!/bin/bash
while read -ra hello; do
name=${hello[8]}
if [[ $name == "$1"* ]]; then
log=${hello[2]}
echo "$log $name"
fi
done | column -t
read -ra
拆分输入行并将单词存储在" hello" 阵列。
[[ $name == "$1"* ]]
是一种内置方法,用于检查字符串是否以某个值开头。