x=$(find . -name "*.txt")
echo $x
Run Code Online (Sandbox Code Playgroud)
如果我在Bash shell中运行上面的代码,我得到的是一个包含多个文件名的字符串,用空格分隔,而不是列表.
当然,我可以进一步将它们分开来获取列表,但我确信有更好的方法可以做到这一点.
那么循环find执行命令结果的最佳方法是什么?
find . -type d
Run Code Online (Sandbox Code Playgroud)
可用于查找某些起点下方的所有目录.但它.也会返回当前目录(),这可能是不受欢迎的.如何排除它?
有人能告诉我是否应该在shell脚本中包含变量的引号?
例如,以下是正确的:
xdg-open $URL
[ $? -eq 2 ]
Run Code Online (Sandbox Code Playgroud)
要么
xdg-open "$URL"
[ "$?" -eq "2" ]
Run Code Online (Sandbox Code Playgroud)
如果是这样,为什么?
如何列出一个文件夹的所有文件,但不能列出其文件夹或子文件.换句话说:我如何只列出文件?
以下是用于读取框中存在的所有DSF的shell脚本.但由于该行有空格,因此它以不同的行显示.对于那些不理解的人ioscan -m dsf,替换它ls -ltr,然后输出是这样的权限和名称显示在不同的行,但我希望它们在同一行.
#!/usr/bin/ksh
for a in `ioscan -m dsf`
do
echo $a
done
Run Code Online (Sandbox Code Playgroud) 我有这个脚本 -
nmapout=`sudo nmap -sP 10.0.0.0/24`
names=`echo "$nmapout" | grep "MAC" | grep -o '(.\+)'`
echo "$names"
Run Code Online (Sandbox Code Playgroud)
现在$names变量包含用换行符分隔的字符串 -
>_
(Netgear)
(Hon Hai Precision Ind. Co.)
(Apple)
Run Code Online (Sandbox Code Playgroud)
我尝试用子串方法进行数组转换 -
names=(${names//\\n/ })
echo "${names[@]}"
Run Code Online (Sandbox Code Playgroud)
但问题是${names[$i],如果我运行此循环,我无法通过索引(即等)访问它们-
for (( i=0; i<${#names[@]}; i++ ))
do
echo "$i: ${names[$i]"
# do some processing with ${names[$i]}
done
Run Code Online (Sandbox Code Playgroud)
我得到这个输出 -
>_
0: (Netgear)
1: (Hon
2: Hai
Run Code Online (Sandbox Code Playgroud)
但我想要的是 -
>_
0: (Netgear)
1: (Hon Hai Precision Ind. Co.)
2: (Apple)
Run Code Online (Sandbox Code Playgroud)
我无法找到一个好方法,请注意第二个字符串中有空格.
任何的想法 ?
我正在编写一个 shell 脚本.. 给定一个文件夹作为命令行参数,它将打印出其中的文件/文件夹的名称
#!/bin/sh
folder="$1"
for f in "$folder"
do
echo "$f"
done
Run Code Online (Sandbox Code Playgroud)
这只会打印出给定文件夹的第一个文件/文件夹。
目前正在学习一些 bash 脚本并遇到一个问题,该问题涉及列出给定目录中的所有文件并说明它们是文件还是目录。我遇到的问题是我只能获取当前目录,或者如果指定一个目录,它只会说它是一个目录,例如。/home/user/shell_scripts 将返回 shell_scipts 是一个目录,而不是其中包含的文件。这是我到目前为止:
dir=$dir
for file in $dir; do
if [[ -d $file ]]; then
echo "$file is a directory"
if [[ -f $file ]]; then
echo "$file is a regular file"
fi
done
Run Code Online (Sandbox Code Playgroud)