我正在尝试编写一个执行以下操作的bash脚本:
因此,例如,输入将是" /mnt/user/my_files/file.txt"。它会搜索"" /mnt/disk1/my_files/file.txt"存在并将逐步查找每个磁盘(disk2,disk3等),直到找到它或disk20。
这是我到目前为止所做的:
#/user/bin/bash
var=$1
i=0
while [ -e $check_var = echo $var | sed 's:/mnt/user:/mnt/disk$i+1:']
do
final=$check_var
done
它不完整是的,但我不是那么精通bash,所以我一次做一点。我确定我的命令也不会正常工作,但是现在我得到一个"意外的文件结束"我无法弄清楚原因。
答案 0 :(得分:2)
这里有很多问题:
#!/usr/bin/bash
或#!/bin/bash
,具体取决于您的系统check_var
之前,您必须先指定[ .. ]
。$(..)
扩展命令$i
等变量未在单引号sed
无法添加数字i
永远不会增加final
。考虑用更小的部分来做,它更容易调试,例如单个语句sed 's:/mnt/user:/mnt/disk$i+1:'
而不是整个while循环。
这是一种更规范的方式:
#!/bin/bash
var="${1#/mnt/user/}"
for file in /mnt/disk{1..20}/"$var"
do
[[ -e "$file" ]] && final="$file" && break
done
if [[ $final ]]
then
echo "It exists at $final"
else
echo "It doesn't exist anywhere"
fi