用于迭代文件的Shell脚本。第3行出错了

时间:2012-08-15 15:20:36

标签: shell

#!/bin/bash
for dir in /home/username/git/*/
do
    for file in "$dir"/*
    do
        if [[ -f $file ]]
        then
            echo   "$file"
        fi
    done
done

当我尝试运行它时。我得到了

syntax error near unexpected toke' `do
'rocTest.sh: line 3: `do

为什么?

1 个答案:

答案 0 :(得分:1)

始终使用"$file"(带引号)来处理“有问题”的文件名;特别是if [[ -f $file ]]应该是

if [[ -f "$file" ]] ...

请注意,bash并不总是在/ bin中(例如,FreeBSD将它放在/ usr / local / bin中);为了更广泛的可移植性,使用

#!/usr/bin/env bash

#!/bin/sh并确保删除bash-isms (例如在Debian / Ubuntu上使用checkbashisms)。例如。写if test -f "$file"而不是[[ -f "$file" ]]