0
#!/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

为什么?

4

1 回答 1

1

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

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

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

#!/usr/bin/env bash

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

于 2013-09-11T11:31:36.523 回答