Reading specifed file line and creating new directories from words that have been taking of that file

时光怂恿深爱的人放手 提交于 2019-12-13 03:56:44

问题


for file in $*
head -n 1 $file | while read folder
do
mkdir $directory $folder
done

Hello guys, I'm having problem with my script. What I want to do is: read first line from my specifed file and create new directories in my specifed directory from words that i have taken from that file.

I'm getting errors like this:

./scriptas: line 2: syntax error near unexpected token `head'
./scriptas: line 2: `head -n 1 $file | while read folder'

And my second question: how do I add a second variable from command line (putty) $directory ?

Example i have file with text:

one two three
five seven nine eleven
okey

i need script to take the first line and create directories "one" "two" "three"


回答1:


You have to put do before the command in a for/while cycle.

Your code should look like something like this:

#!/bin/bash

files=$*

for file in $files
do
head -n1 "$file" | while read dname
do
mkdir $dname
done
done

as for other variables, the simple syntax is a number behind the $ sign.

so you could do

files="$1"
directory="$2"

and then run the script as

./script.sh "file1.txt file2.txt file3.txt" dir2

More complex solutions include getopts and such....




回答2:


Updated the script. You can use it in this way: script.sh "one.txt two.txt three.txt" destdir

#! /bin/bash

for files in $1
do
    for i in $(head -n 1 $files)
    do
       if [ -z $2 ]
       then
           mkdir $i
       else
           mkdir $2/$i -p
       fi
    done
done


来源:https://stackoverflow.com/questions/29825716/reading-specifed-file-line-and-creating-new-directories-from-words-that-have-bee

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!