set -x
function ergodic(){
echo " ls -al $1 | awk '{ if ( ( $8!=\"..\") && ($8!=\".\") ) print $8}' "
exit 0
for file in ` ls -al $1 | awk '{ if ( ( $8!="..") && ($8!=".") ) print $8}' `
do
echo $1"/"$file" ------ "$OWN
if [ -d $1"/"$file ]
then
local mydir=1
mydir=`ls -al $1"/"$file | awk '{ if ( ( $3==$OWN) && ($8==".") ) print $8}'`
echo "ls -al $1"/"$file | awk '{ if ( ( $3==$OWN) && ($8==\".\") ) print $0}'"
echo "mydir:"$OWN`ls -al $1"/"$file | awk '{ if ( ( $3==$OWN) && ($8==".") ) print $0}'`
if [ !$mydir ]
then
echo $1/$file
else
ergodic $1"/"$file
fi
else
local mydir=`ls -al $1"/"$file | awk '{ if ( $3==$OWN ) print $8 }'`
if [ $mydir==$file ]
then
echo $1"/"$file"------file"
fi
fi
done
}
INIT_PATH=$1
OWN=$2
ergodic $INIT_PATH
这是我当前的代码
目的是找 某用户的文件夹或文件
awk里面的$数字得不到值!
谢谢你!我说的是$数字是指awk分割后字段号。
用这种格式吗?
mydir=`ls -al $1"/"$file | awk '{ if ( ( ‘$3’=='$OWN’) && ($8==".") ) print $8}'`
awk是独立于shell的一个文本处理工具。
如果 $数字 是 awk 的内置变量,那么就放在awk的单引号中,不用拿出来。
$OWN 这个肯定不是 awk 里定义的,是shell的变量,需要放到awk的单引号外面。
mydir=`ls -al $1"/"$file | awk '{ if ( ( $3=='$OWN’) && ($8==".") ) print $8}'`
即把awk后的内容分成几段:
'{ if ( ( $3=='
$OWN
’) && ($8==".") ) print $8}'
你问的“awk 在函数中怎么传参数” 是什么意思?你要传什么参数?
不好意思 我刚接触shell 没有怎么明白您说的。能给个实例吗?
追答上述所说的是awk代码内的自定义函数
你要的可能是awk的处理和传值机制
awk是一种行处理机制,也就是输入的每一行都经过'{xxxxx}'内的运算
awk一般输入方式有三种
1,文件传入
如: awk '{xxxx}' fname.txt
这里awk将对fname.txt的每一行进行处理
2,管道传入
如: cat fname.txt | awk '{xxxx}'
这里awk同样将对fname.txt的每一行进行处理
3,变量传入
如: awk -v a="123" '{xxxx}'
这里awk程序内部将可以使用a并得到a的值