- 论坛徽章:
- 2
|
本帖最后由 zy86416779 于 2016-08-25 16:37 编辑
这个脚本的目的:给出一个文件,1. 判断是否是文件,如果是文件,则给出全路径
2. 如果不是文件,则可以自己输入文件,然后再次判断,直到输入为文件,并且给出全路径
底下为脚本和文件
- [root@study test]# ll
- 总计 16
- -rw-r--r-- 1 root root 602 08-26 01:24 getFilename.awk
- -rw-r--r-- 1 root root 2216 07-24 02:26 passwd
复制代码 底下为脚本内容
- # getFilename function -- prompts user for filename,
- # verifies that file exists and returns absolute pathname.
- function getFilename( file) {
- while (system("[ -f file ]")==0) {
- printf "Enter a filename: "
- getline < "-" # get response
- file = $0
- # check that file exists and is readable
- # test returns 1 if file does not exist.
- if (system("[ -f file ]")==0) {
- print file " not found"
- file = ""
- }
- }
- if (file !~ /^\//) {
- "pwd" | getline # get current directory
- close("pwd")
- file = $0 "/" file
- }
- return file
- }
- BEGIN{print getFilename("passwd")}
复制代码 如果我以这个脚本内容来执行,则会出现正确的结果
- [root@study test]# awk -f getFilename.awk
- /var/tmp/test/passwd
复制代码 但是,如果我把passwd改成pass,则结果就会变成
- [root@study test]# awk -f getFilename.awk
- /var/tmp/test/sswd
复制代码 从这个结果看,感觉while的那个判断语句没有执行,希望大家能够指出问题出在哪里。谢谢!
|
|