【发布时间】:2015-12-19 16:11:22
【问题描述】:
我正在编写 shell 脚本并尝试将用户输入拆分为多个变量并在不同的地方使用它们。
用户输入不固定所以不能真正分配固定数量的变量,输入用逗号分隔,
./user_input.ksh -string /m01,/m02,/m03
#!/bin/ksh
STR=$2
function showMounts {
echo "$STR"
arr=($(tr ',' ' ' <<< "$STR"))
printf "%s\n" "$(arr[@]}"
for x in "$(arr[@]}"
do
free_space=`df -h "$x" | grep -v "Avail" | awk '{print $4}'`
echo "$x": free_space "$free_space"
done
#total_free_space = <total of $free_space>
#echo "$total_free_space"
}
基本上 $STR* 变量值是文件系统挂载点
如果单独运行df -h 命令,则主机输出
$ df -h /m01 | grep -v "Avail" | awk '{print $4}'
***Output***
150
当前问题:
(working)1. How to get free space available for each /m* using df -h?
【问题讨论】:
-
不清楚要如何拆分。再举几个例子来澄清一下。
-
@anubhava 我提供了 echo 作为示例,谢谢。
-
df -h /m01 | grep -v "有效" | awk {'print $4'} --> 给我 150,但这在脚本中不起作用
-
@EdMorton 谢谢,更新了我使用的问题,错误是什么以及我正在尝试解决的问题。
-
@EdMorton arr 是错字,我修正了它。错误日志指向我开始
free_space =...的行。我的主要目标是 1. 检查用户输入的所有挂载是否存在,如果不存在则退出 2. 在每个挂载处获取可用空间 3. 结合总和 #2 获取总可用空间