Я пытаюсь написать простой bash-скрипт, который принимает все аргументы и интерпретирует их просто как строку.
Другими словами:
tweet Testing out my command-line tweetings. #commandlinetweets
Принимает все аргументы и просто использует их прямо как строку.
Вот основная форма, которая у меня есть на данный момент:
function tweet()
{
echo "Tweeting using curl."
curl -u tchalvak "http://twitter.com/statuses/update.xml" -d status="$@"
echo "Tweet done if spammed info back above."
echo "Tweeted using username tchalvak with status $@"
}
Прямо сейчас ошибочный результат запуска функции:
$ tweet TEst again and again and again.
Tweeting using curl.
Enter host password for user 'tchalvak':
<?xml version="1.0" encoding="UTF-8"?>
<hash>
<request>/statuses/update.xml</request>
<error>Status is a duplicate.</error>
</hash>
curl: (6) Couldn't resolve host 'again'
curl: (6) Couldn't resolve host 'and'
curl: (6) Couldn't resolve host 'again'
curl: (6) Couldn't resolve host 'and'
curl: (6) Couldn't resolve host 'again.'
Tweet done if spammed info back above.
Tweeted using username tchalvak with status TEst again and again and again.
Итак, как мне получить из нескольких аргументов, что «все эти технически множественные аргументы должны учитываться как одна строковая переменная внутри функции»?
Редактировать : Извините, я должен уточнить, что я решил жестко закодировать имя пользователя для максимальной пуленепробиваемости синтаксиса твита.
Окончательное решение (до тех пор, пока вы игнорируете проблемы интерпретации команд, такие как #
, хэши не проходят и подобные проблемы, которые вызовет этот грязный метод, хе):
function tweet()
{
STATUS="$*"
echo "Tweeting using curl."
curl -u tchalvak "http://twitter.com/statuses/update.xml" -d status="$STATUS"
echo "Tweet done if spammed info back above."
echo "Tweeted using username tchalvak with status $STATUS"
}