在bash中创建动态表
我有一个bash脚本,它创建不同的用户和密码。密码和用户存储在变量中在bash中创建动态表,bash,awk,sed,Bash,Awk,Sed,我有一个bash脚本,它创建不同的用户和密码。密码和用户存储在变量中 cat << EOT +---------------------------------------+ | Linux Logins | +---------------+-----------------------+ | User | Password | +---------------+---------
cat << EOT
+---------------------------------------+
| Linux Logins |
+---------------+-----------------------+
| User | Password |
+---------------+-----------------------+
| $test | $testpw |
+---------------+-----------------------+
EOT
这是因为选项卡是硬编码的。我如何以不同的方式解决这个问题?我知道有awk和专栏可以这样做。
如果可能的话,我希望它在mysql控制台中是动态的。变量可以用printf填充
printf -v test %20s "$test"
printf -v testpw %20s "$testpw"
或左对齐
printf -v test %-20s "$test"
printf -v testpw %-20s "$testpw"
或在特定长度(19)后进行trunc
变量可以用printf填充
printf -v test %20s "$test"
printf -v testpw %20s "$testpw"
或左对齐
printf -v test %-20s "$test"
printf -v testpw %-20s "$testpw"
或在特定长度(19)后进行trunc
我想你的意思是说你的问题是因为你的标签没有硬编码。但是标签并没有足够的灵活性来做你想做的事情。你可以做:
cat << EOT
+---------------------------------------+
| Linux Logins |
+---------------+-----------------------+
| User | Password |
+---------------+-----------------------+
| $(printf %-14s "$test")| $(printf %-22s "$testpw")|
+---------------+-----------------------+
EOT
cat我想你的意思是,你的问题是因为你的标签没有硬编码。但是标签并没有足够的灵活性来做你想做的事情。你可以做:
cat << EOT
+---------------------------------------+
| Linux Logins |
+---------------+-----------------------+
| User | Password |
+---------------+-----------------------+
| $(printf %-14s "$test")| $(printf %-22s "$testpw")|
+---------------+-----------------------+
EOT
cat我认为这在这里是不可能的。可能的方法是使用printf
,如中所述,我认为这在here文档中是不可能的。可能方法是使用@patrick_uu中描述的printf
。对不起,我从函数中剪切了n-pasted,并使用$1
和$2
而不是$test
和$testpw
。我应该在函数定义中留下原始答案!谢谢,这似乎与密码高达22个字符的工作。超过22个字符是不现实的,因此此解决方案非常有效。非常感谢。也可以使用printf-v
来完成,这更有效,因为避免了调用子shell来处理管道结果expansion@patrick_抱歉,我从函数中剪切了n粘贴,并使用了$1
和$2
而不是$test
和$testpw
。我应该在函数定义中留下原始答案!谢谢,这似乎与密码高达22个字符的工作。超过22个字符是不现实的,因此此解决方案非常有效。非常感谢。也可以使用printf-v
完成,这更有效,因为避免了调用子shell到管道导致扩展